/**
 * 场景管理类
 */
class SceneMng {
	private _stage:egret.DisplayObjectContainer // 设置所有场景所在的舞台(根)
    public levelScene:GameLevel //关卡场景
    public logoScene:LogoScene //主场景
	public gameScene:GameScene //游戏场景

	public constructor() {
		// 在构造函数中创建好场景，保存到属性
		this.gameScene = new GameScene();
        this.levelScene = new GameLevel();
		this.logoScene = new LogoScene();
	}

	/**
     * 获取实例
     */
    static SceneMng:SceneMng
    static get instance(){
        if(!this.SceneMng) {
            this.SceneMng =  new SceneMng();
        } 
        return this.SceneMng;
    }
    /**
     * 设置根场景
     */
    public setStage(s:egret.DisplayObjectContainer) {
        this._stage = s;
    }

     /**
     * 删除其他场景
     * @param scene 不需要删除的场景
     */
    private removeOther(scene) {
        let arr = [this.gameScene, this.levelScene]
        arr.forEach((item)=> {
            if(scene === item) {
                return 
            }
            if(item.parent) {
                this.logoScene.removeChild(item)
            }
        })
    }

	//游戏场景
	static toPlayScene(){
		
        let gameScene = SceneMng.instance.gameScene;  
        
	}

    //关卡场景
	static toLevelScene() {        
        this.instance.removeOther(this.instance.levelScene);        
        // 把关卡场景添加到主场景中
        this.instance.logoScene.addChild(this.instance.levelScene);
        //console.log('场景管理调用成功'); 
    }

    /**
     * 主场景
     */
    static toLogoScene() {        
        let stage:egret.DisplayObjectContainer = this.instance._stage;
        let logoScene = SceneMng.instance.logoScene; 
        
        // 判断主场景是否有父级(如果有,说明已经被添加到了场景中)
        if(!logoScene.parent){
            // 未被添加到场景
            // 把主场景添加到之前设置好的根舞台中
            stage.addChild(logoScene);
        } 

        SceneMng.instance.removeOther(SceneMng.instance.logoScene);
    }

}